package org.ing.sisval.da;

import java.sql.Connection;
import java.util.ArrayList;
import org.ing.sisval.be.BEPropiedad;
import org.rx.cr.dao.DAOAbstract;

public class DAPropiedad extends DAOAbstract<BEPropiedad> {

    public DAPropiedad(Connection conn) {
        setConnection(conn);
    }

    @Override
    public int registrar(BEPropiedad be) throws Exception {
        try {
            setStoreProcedure("SISVAL.sp_ins_propiedad");
            setParameterInt(be.getUbigeoid());
            setParameterString(be.getPropietario1());
            setParameterString(be.getDireccion());
            setParameterInt(be.getTerrenoid());
            setParameterDouble(be.getValorcomplementario());
            setParameterDouble(be.getValortotalpredio());
            setParameterDouble(be.getValortotaledificacion());
            setParameterDouble(be.getValortotalterreno());
            setParameterString(be.getPropietario2());
            setParameterString(be.getSolicitante());
            setParameterString(be.getPerito());
            setParameterString(be.getRegistroperito());
            setParameterString(be.getObjetivo());
            setParameterString(be.getMetodologia());
            setParameterDate(be.getFechavaloracion());
            setParameterString(be.getLinderofrente());
            setParameterString(be.getLinderoderecha());
            setParameterString(be.getLinderoizquierda());
            setParameterString(be.getLinderofondo());
            setParameterString(be.getZonificacion());
            setParameterString(be.getViaacceso());
            setParameterString(be.getDensidadpoblacional());
            setParameterString(be.getPrediocircundante());
            setParameterString(be.getUsourbano());
            setParameterString(be.getInscripcion());
            setParameterString(be.getDescripcion());
            setParameterString(be.getObservacion());
            setParameterBinaryStream(be.getImagen());
            setParameterString(be.getExtension());
            setParameterString(be.getEstado());
            setParameterString(be.getTasacion());
            setParameterDouble(be.getPerimetro());
            setParameterBinaryStream(be.getImagen2());
            setParameterString(be.getExtension2());
            setParameterBinaryStream(be.getImagen3());
            setParameterString(be.getExtension3());
            setParameterBinaryStream(be.getImagen4());
            setParameterString(be.getExtension4());
            setParameterBinaryStream(be.getImagen5());
            setParameterString(be.getExtension5());
            setParameterBinaryStream(be.getImagen6());
            setParameterString(be.getExtension6());
            setParameterBinaryStream(be.getImagen7());
            setParameterString(be.getExtension7());
            setParameterBinaryStream(be.getImagen8());
            setParameterString(be.getExtension8());
            setParameterBinaryStream(be.getImagen9());
            setParameterString(be.getExtension9());
            setParameterBinaryStream(be.getImagen10());
            setParameterString(be.getExtension10());
            setParameterBinaryStream(be.getImagen11());
            setParameterString(be.getExtension11());
            setParameterBinaryStream(be.getImagen12());
            setParameterString(be.getExtension12());

            
            setParameterString(be.getObservacion1());
            setParameterString(be.getObservacion2());
            setParameterString(be.getObservacion3());
            setParameterString(be.getObservacion4());
            setParameterString(be.getObservacion5());
            setParameterString(be.getObservacion6());
            setParameterString(be.getObservacion7());
            setParameterString(be.getObservacion8());
            setParameterString(be.getObservacion9());
            setParameterString(be.getObservacion10());
            setParameterString(be.getObservacion11());
            setParameterString(be.getObservacion12());

            return Integer.parseInt(commit().toString());
        } catch (Exception e) {
            return rollback(e);
        }
    }

    @Override
    public int actualizarRegistro(BEPropiedad be) throws Exception {
        try {
            setStoreProcedure("SISVAL.sp_upd_propiedad");
            setParameterInt(be.getPropiedadid());
            setParameterInt(be.getUbigeoid());
            setParameterString(be.getPropietario1());
            setParameterString(be.getDireccion());
            setParameterInt(be.getTerrenoid());
            setParameterDouble(be.getValorcomplementario());
            setParameterDouble(be.getValortotalpredio());
            setParameterDouble(be.getValortotaledificacion());
            setParameterDouble(be.getValortotalterreno());
            setParameterString(be.getPropietario2());
            setParameterString(be.getSolicitante());
            setParameterString(be.getPerito());
            setParameterString(be.getRegistroperito());
            setParameterString(be.getObjetivo());
            setParameterString(be.getMetodologia());
            setParameterDate(be.getFechavaloracion());
            setParameterString(be.getLinderofrente());
            setParameterString(be.getLinderoderecha());
            setParameterString(be.getLinderoizquierda());
            setParameterString(be.getLinderofondo());
            setParameterString(be.getZonificacion());
            setParameterString(be.getViaacceso());
            setParameterString(be.getDensidadpoblacional());
            setParameterString(be.getPrediocircundante());
            setParameterString(be.getUsourbano());
            setParameterString(be.getInscripcion());
            setParameterString(be.getDescripcion());
            setParameterString(be.getObservacion());
            setParameterBinaryStream(be.getImagen());
            setParameterString(be.getExtension());
            setParameterString(be.getEstado());
            setParameterString(be.getTasacion());
            setParameterDouble(be.getPerimetro());

            setParameterBinaryStream(be.getImagen2());
            setParameterString(be.getExtension2());
            setParameterBinaryStream(be.getImagen3());
            setParameterString(be.getExtension3());
            setParameterBinaryStream(be.getImagen4());
            setParameterString(be.getExtension4());
            setParameterBinaryStream(be.getImagen5());
            setParameterString(be.getExtension5());
            setParameterBinaryStream(be.getImagen6());
            setParameterString(be.getExtension6());
            setParameterBinaryStream(be.getImagen7());
            setParameterString(be.getExtension7());
            setParameterBinaryStream(be.getImagen8());
            setParameterString(be.getExtension8());
            setParameterBinaryStream(be.getImagen9());
            setParameterString(be.getExtension9());
            setParameterBinaryStream(be.getImagen10());
            setParameterString(be.getExtension10());
            setParameterBinaryStream(be.getImagen11());
            setParameterString(be.getExtension11());
            setParameterBinaryStream(be.getImagen12());
            setParameterString(be.getExtension12());

            setParameterString(be.getObservacion1());
            setParameterString(be.getObservacion2());
            setParameterString(be.getObservacion3());
            setParameterString(be.getObservacion4());
            setParameterString(be.getObservacion5());
            setParameterString(be.getObservacion6());
            setParameterString(be.getObservacion7());
            setParameterString(be.getObservacion8());
            setParameterString(be.getObservacion9());
            setParameterString(be.getObservacion10());
            setParameterString(be.getObservacion11());
            setParameterString(be.getObservacion12());

            return Integer.parseInt(commit().toString());
        } catch (Exception e) {
            return rollback(e);
        }
    }

    @Override
    public int eliminarRegistro(BEPropiedad be) throws Exception {
        try {
            setStoreProcedure("SISVAL.sp_del_propiedad");
            setParameterInt(be.getPropiedadid());

            return Integer.parseInt(commit().toString());
        } catch (Exception e) {
            return rollback(e);
        }
    }

    @Override
    public ArrayList<BEPropiedad> buscarReferencia(String ref) throws Exception {
        try {
            clear();
            setStoreProcedure("SISVAL.sp_sel_propiedad");
            setParameterString(ref);
            commitc();
            while (existResult()) {
                BEPropiedad be = new BEPropiedad();
                be.setPropiedadid(getDataInt(1));
                be.setUbigeoid(getDataInt(2));
                be.setPropietario1(getDataString(3));
                be.setDireccion(getDataString(4));
                be.setTerrenoid(getDataInt(5));
                be.setValorcomplementario(getDataDouble(6));
                be.setValortotalpredio(getDataDouble(7));
                be.setValortotaledificacion(getDataDouble(8));
                be.setValortotalterreno(getDataDouble(9));
                be.setPropietario2(getDataString(10));
                be.setSolicitante(getDataString(11));
                be.setPerito(getDataString(12));
                be.setRegistroperito(getDataString(13));
                be.setObjetivo(getDataString(14));
                be.setMetodologia(getDataString(15));
                be.setFechavaloracion(getDataDate(16));
                be.setLinderofrente(getDataString(17));
                be.setLinderoderecha(getDataString(18));
                be.setLinderoizquierda(getDataString(19));
                be.setLinderofondo(getDataString(20));
                be.setZonificacion(getDataString(21));
                be.setViaacceso(getDataString(22));
                be.setDensidadpoblacional(getDataString(23));
                be.setPrediocircundante(getDataString(24));
                be.setUsourbano(getDataString(25));
                be.setInscripcion(getDataString(26));
                be.setDescripcion(getDataString(27));
                be.setObservacion(getDataString(28));
                be.setEstado(getDataString(29));
                be.setTasacion(getDataString(30));
                be.setPerimetro(getDataDouble(31));

                add(be);
            }
            return getLista();
        } catch (Exception e) {
            rollback(e);
            return null;
        }
    }

    @Override
    public ArrayList<BEPropiedad> listar() throws Exception {
        try {
            clear();
            setStoreProcedure("SISVAL.sp_sel_propiedad");
            setParameterString("");
            commitc();
            while (existResult()) {
                BEPropiedad be = new BEPropiedad();
                be.setPropiedadid(getDataInt(1));
                be.setUbigeoid(getDataInt(2));
                be.setPropietario1(getDataString(3));
                be.setDireccion(getDataString(4));
                be.setTerrenoid(getDataInt(5));
                be.setValorcomplementario(getDataDouble(6));
                be.setValortotalpredio(getDataDouble(7));
                be.setValortotaledificacion(getDataDouble(8));
                be.setValortotalterreno(getDataDouble(9));
                be.setPropietario2(getDataString(10));
                be.setSolicitante(getDataString(11));
                be.setPerito(getDataString(12));
                be.setRegistroperito(getDataString(13));
                be.setObjetivo(getDataString(14));
                be.setMetodologia(getDataString(15));
                be.setFechavaloracion(getDataDate(16));
                be.setLinderofrente(getDataString(17));
                be.setLinderoderecha(getDataString(18));
                be.setLinderoizquierda(getDataString(19));
                be.setLinderofondo(getDataString(20));
                be.setZonificacion(getDataString(21));
                be.setViaacceso(getDataString(22));
                be.setDensidadpoblacional(getDataString(23));
                be.setPrediocircundante(getDataString(24));
                be.setUsourbano(getDataString(25));
                be.setInscripcion(getDataString(26));
                be.setDescripcion(getDataString(27));
                be.setObservacion(getDataString(28));
                be.setEstado(getDataString(29));
                be.setTasacion(getDataString(30));
                be.setPerimetro(getDataDouble(31));

                add(be);
            }
            return getLista();
        } catch (Exception e) {
            rollback(e);
            return null;
        }
    }

    @Override
    public BEPropiedad buscar(int i) throws Exception {
        try {
            BEPropiedad be = null;
            clear();
            setStoreProcedure("SISVAL.sp_sel_propiedad_id");
            setParameterInt(i);
            commitc();
            while (existResult()) {
                be = new BEPropiedad();
                be.setPropiedadid(getDataInt(1));
                be.setUbigeoid(getDataInt(2));
                be.setPropietario1(getDataString(3));
                be.setDireccion(getDataString(4));
                be.setTerrenoid(getDataInt(5));
                be.setValorcomplementario(getDataDouble(6));
                be.setValortotalpredio(getDataDouble(7));
                be.setValortotaledificacion(getDataDouble(8));
                be.setValortotalterreno(getDataDouble(9));
                be.setPropietario2(getDataString(10));
                be.setSolicitante(getDataString(11));
                be.setPerito(getDataString(12));
                be.setRegistroperito(getDataString(13));
                be.setObjetivo(getDataString(14));
                be.setMetodologia(getDataString(15));
                be.setFechavaloracion(getDataDate(16));
                be.setLinderofrente(getDataString(17));
                be.setLinderoderecha(getDataString(18));
                be.setLinderoizquierda(getDataString(19));
                be.setLinderofondo(getDataString(20));
                be.setZonificacion(getDataString(21));
                be.setViaacceso(getDataString(22));
                be.setDensidadpoblacional(getDataString(23));
                be.setPrediocircundante(getDataString(24));
                be.setUsourbano(getDataString(25));
                be.setInscripcion(getDataString(26));
                be.setDescripcion(getDataString(27));
                be.setObservacion(getDataString(28));
                be.setImagen(getDataBinaryStream(29, "imagen1." + getDataString(30)));
                be.setEstado(getDataString(31));
                be.setTasacion(getDataString(32));
                be.setPerimetro(getDataDouble(33));
                be.setImagen2(getDataBinaryStream(34, "imagen2." + getDataString(35)));
                be.setImagen3(getDataBinaryStream(36, "imagen3." + getDataString(37)));
                be.setImagen4(getDataBinaryStream(38, "imagen4." + getDataString(39)));
                be.setImagen5(getDataBinaryStream(40, "imagen5." + getDataString(41)));
                be.setImagen6(getDataBinaryStream(42, "imagen6." + getDataString(43)));
                be.setImagen7(getDataBinaryStream(44, "imagen7." + getDataString(45)));
                be.setImagen8(getDataBinaryStream(46, "imagen8." + getDataString(47)));
                be.setImagen9(getDataBinaryStream(48, "imagen9." + getDataString(49)));
                be.setImagen10(getDataBinaryStream(50, "imagen10." + getDataString(51)));
                be.setImagen11(getDataBinaryStream(52, "imagen11." + getDataString(53)));
                be.setImagen12(getDataBinaryStream(54, "imagen12." + getDataString(55)));

                be.setObservacion1(getDataString(56));
                be.setObservacion2(getDataString(57));
                be.setObservacion3(getDataString(58));
                be.setObservacion4(getDataString(59));
                be.setObservacion5(getDataString(60));
                be.setObservacion6(getDataString(61));
                be.setObservacion7(getDataString(62));
                be.setObservacion8(getDataString(63));
                be.setObservacion9(getDataString(64));
                be.setObservacion10(getDataString(65));
                be.setObservacion11(getDataString(66));
                be.setObservacion12(getDataString(67));

            }
            return be;
        } catch (Exception e) {
            rollback(e);
            return null;
        }
    }

    public int obtenerUltimoId() throws Exception {
        BEPropiedad be = new BEPropiedad();
        try {
            setStoreProcedure("sp_obtenerpropiedadid");
            while (existResult()) {
                be.setPropiedadid(getDataInt(1));
            }

            return Integer.parseInt(commit().toString());

        } catch (Exception e) {
            return rollback(e);
        }
    }

}
